package LineCode.剑指Offer.代码的完整性;

/**
 * 输入一个整数数组，实现一个函数来调整该数组中数字的顺序，
 * 使得所有的奇数位于数组的前半部分，所有的偶数位于位于数组的后半部分，
 * 并保证奇数和奇数，偶数和偶数之间的相对位置不变。
 */
public class 调整数组顺序 {

    public static void main(String[] args) {
        int[] nums = {1,9,5,4,7,6,3,5,4,7,5,2,4,1};
        for (int i : nums)
            System.out.print(i);
        System.out.println();
        reOrderArray(nums);
        for (int i : nums)
            System.out.print(i);
    }

    /**
     * 简单的循环 就像排序 遇到前偶后奇 交换
     * @param array
     */
    public static void reOrderArray(int [] array) {
        if (array == null || array.length <= 0)
            return ;
        //int temp = array.length - 1; //尾部指针 优化代码
        for (int i = 0, temp = array.length - 1; i < array.length; i++, temp--) {
            for (int j = 0; j < temp; j++) {
                if (array[j]%2 == 0 && array[j+1]%2 == 1) {
                    int index = array[j];
                    array[j] = array[j+1];
                    array[j+1] = index;
                }
            }
            
        }
    }
}
